from django import template
from django.utils.safestring import mark_safe
from django.utils.encoding import force_unicode


register = template.Library()



################################################################################################################################
############################                          CAMPOS OBRIGATORIOS
################################################################################################################################
##
## email_loja               Alfa-Numerico  	80  	E-mail da loja cadastrada no Pagamento Digital.
## produto_codigo_X         Alfa-Numerico 	50 	Codigo que identifica o produto em sua loja.
## produto_descricao_X      Texto               255 	Descricao ou nome do(s) produto comprado. Sera visualizada pelo cliente.
## produto_qtde_X           Numerico            11 	Quantidade comprada deste produto.
## produto_valor_X          Numerico            11 	Valor unitario do produto. Usar "." para separar os decimais.
## tipo_integracao          Alfa-Numerico 	3 	Tipo de integracao com o Pagamento Digital. Tipos: PAD (Padrao)
## frete                    Numerico            11 	Valor total do frete.
##
##
################################################################################################################################
############################                          CAMPOS OPCIONAIS
################################################################################################################################
##
## produto_extra_x          Alfa-Numerico  	255  	Descricao adicional do produto.
## id_pedido                Alfa-Numerico 	50 	Codigo do pedido atribuido pela loja.
## email                    Alfa-Numerico 	80 	E-mail do cliente que fez a compra.
## nome                     Alfa-Numerico 	80 	Nome do cliente que fez a compra.
## rg                       Alfa-Numerico 	20 	Rg do comprador.
## data_emissao_rg          Alfa-Numerico 	10 	Data de emissao do Rg do comprador. Formato do campo: dd/mm/aaaa
## orgao_emissor_rg         Alfa-Numerico 	20 	Orgao que emitiu Rg do comprador.
## estado_emissor_rg        Alfa-Numerico 	2 	Estado onde foi emitido o Rg do comprador.
## cpf                      Alfa-Numerico 	17 	CPF do cliente que fez a compra.
## sexo                     Alfa-Numerico 	20 	Sexo do comprador. Formato do campo: M ou F.
## data_nascimento          Alfa-Numerico 	10 	Data de Nascimento do comprador. Formato do campo: dd/mm/aaaa
## telefone                 Alfa-Numerico 	20 	Telefone do cliente que fez a compra.
## celular                  Alfa-Numerico 	20 	Telefone celular do cliente que fez a compra.
## endereco                 Alfa-Numerico 	100 	Endereco do cliente que fez a compra.
## complemento              Alfa-Numerico 	80 	Complemento do endereco do cliente que fez a compra.
## bairro                   Alfa-Numerico 	50 	Bairro do cliente que fez a compra.
## cidade                   Alfa-Numerico 	255 	Cidade do cliente que fez a compra.
## estado                   Alfa-Numerico 	2 	Estado do cliente que fez a compra.
## cep                      Alfa-Numerico 	9 	CEP do cliente que fez a compra.
## free                     Alfa-Numerico 	255 	Campo de Livre Digitacao. Pode ser utilizado para algum parametro adicional de identificacao da venda.
## tipo_frete               Alfa-Numerico 	30 	Tipo do frete. Sedex, encomenda, etc.
## desconto                 Numerico            11 	Valor total do desconto atribuido pela loja. Usar "." para separar os decimais.
## acrescimo                Numerico            11 	Valor total do acrescimo feito pela loja. Usar "." para separar os decimais.
## url_retorno              Alfa-Numerico 	255 	URL completa que indica a pagina em sua loja virtual que recebera as informacoes, caso escolha integracao com retorno automatico dos dados.
## cliente_razao_social     Alfa-Numerico 	255 	Razao social do cliente.
## cliente_cnpj             Numerico            30 	CNPJ do cliente.
## parcela_maxima           Numerico            2 	Numero maximo de parcelas que a loja aceitara
## meio_pagamento           Numerico            2 	Auto selecao do meio de pagamento. Caso este campo venha preenchido com os valores abaixo, o Pagamento Digital ja ira selecionar a forma de pagamento informada. Isto nao impede que o comprador utilize outros meios de pagamento, apenas faz uma selecao inicial.
## redirect                 Alfa-Numerico 	10 	Este campo serve para redirecionar seu cliente para uma pagina do seu site apos 30 segundos da confirmacao da transacao insira o valor "true" neste campo, voce sera redirecionado para a URL informada no campo URL_RETORNO
## redirect_time            Numerico            2 	Tempo que o Pagamento Digital aguardara, antes de redirecionar o comprador para a URL de retorno enviada pela loja. Valores permitidos: 0 ate 60 (segundos). Para redirecionamento imediato, use 0. Se este parametro vier vazio ou invalido, o Pagamento Digital considerara o tempo padrao de 30 segundos.
## hash                     Alfa-Numerico 	255 	Permite criar uma instrucao criptografada das informacoes enviadas ao Pagamento Digital atraves do codigo html, garantindo a integridade dos dados. Para mais informacoes veja a tabela explicativa.
##
## * Obervacao: Enviando dados opcionais de cliente, o cliente nao precisa se cadastrar no Pagamento Digital
##
##
##
################################################################################################################################
## Meios de pagamento
## VISA                                         1
## Mastercard                                   2
## American Express                             37
## AURA                                         45
## Diners                                       55
## Hipercard                                    56
## Boleto                                       10
## Transferencia OnLine Banco do Brasil 	58
## Transferencia OnLine Banco Bradesco          59
## Transferencia OnLine Banco Itau              60
################################################################################################################################


def pagdig_formSend(dados_compra):
    '''
    Recebe uma string com todos os dados para serem enviados para o Pagamento Digital no formato
    {'name': nome do campo, 'value': valor do campo} e gera automaticamente o formulario de envio.
    Por exemplo, {'id_pedido': 3642} gera o campo <input name="id_pedido" type="hidden" value="3642">.

    OBS: os campos 'email_loja' e 'url_retorno' ja sao definidos no settings.py deste aplicativo. O campo
    'tipo_integracao' atualmente so aceita o valor 'PAD' e ja e sempre preenchido com esse valor.
    '''

    #atribui todos os valores a seus respectivos campos
    formulario = []
    formulario.extend( dados_compra )

    from gouache.pagamento_digital import settings as settings_pagdig
    formulario.append( {'name': 'email_loja', 'value': settings_pagdig.PAGDIG_EMAIL_LOJA} )
    formulario.append( {'name': 'url_retorno', 'value': settings_pagdig.PAGDIG_URL_RETORNO} )
    formulario.append( {'name': 'tipo_integracao', 'value': 'PAD'} )


    from django.conf import settings
    return {'MEDIA_URL': settings.MEDIA_URL, 'formulario': formulario, 'settings_pagdig': settings_pagdig}

register.inclusion_tag('pagamento_digital/template_form.html')(pagdig_formSend)

